home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / graphics / pbm / ppmtoraw.lzh / ppmtoraw.c < prev    next >
C/C++ Source or Header  |  1992-09-23  |  1KB  |  68 lines

  1. /*By Terje Vernly (terjeve@ifi.uio.no)*/
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. #define BUFSIZE 100*1024
  6.  
  7. SkipBlanks(FILE *f)
  8. {
  9.   int c=0;
  10.  
  11.   while (c!=' ' && c!='\t' && c!='\r' && c!='\n') c=fgetc(f);
  12.   ungetc(c,f);
  13. }
  14.  
  15. convert(FILE *f)
  16. {
  17.   int maxX, maxY, maxval;
  18.   int bytes_read;
  19.   char *buffer;
  20.  
  21.   SkipBlanks(f);
  22.   fscanf(f,"%d",&maxX);
  23.   SkipBlanks(f);
  24.   fscanf(f,"%d",&maxY);
  25.   SkipBlanks(f);
  26.   fscanf(f,"%d",&maxval);
  27.   fgetc(f);
  28.   printf("%d %d\n",maxX,maxY);
  29.  
  30.   if ((buffer=(char *) malloc(BUFSIZE))==NULL) {
  31.     fprintf(stderr,"Not enough memory.\n");
  32.     exit(1);
  33.   }
  34.  
  35.   do {
  36.     bytes_read=fread(buffer,1,BUFSIZE,f);
  37.     fwrite(buffer,bytes_read,1,stdout);
  38.   } while (bytes_read==BUFSIZE);
  39. }
  40.  
  41. main(int argc, char **argv)
  42. {
  43.   FILE *fd;
  44.   int x,y;
  45.  
  46.   if (argc!=2) {
  47.     fd=stdin;
  48.   } else {
  49.     if ((fd=fopen(argv[1],"rb"))==NULL) {
  50.       fprintf(stderr,"%s: File not found\n",argv[0]);
  51.       exit(1);
  52.     }
  53.   }
  54.  
  55.   setvbuf(stdout, (char *) NULL, _IOFBF, 100*1024);
  56.   
  57.   x=fgetc(fd);
  58.   y=fgetc(fd);
  59.   if (!((x=='P') && (y=='6'))) {
  60.     fprintf(stderr,"Not a RAWBITS ppm-image.\n");
  61.     exit(1);
  62.   }
  63.  
  64.   convert(fd);
  65.   fclose(fd);
  66.   return 0;
  67. }
  68.